package com.gitee.feizns.quickstart.code.generator;

/**
 * 应用程序接口
 * @author feizns
 * @since 2024/12/6
 */
public enum Methods {

    /**
     * 非批量创建
     */
    Create,

    /**
     * 创建和批量创建
     */
    Creates,

    /**
     * 删除通过编号
     */
    DeleteById,

    /**
     * 删除（批量）
     */
    Delete,

    /**
     * 新增或更新数据
     */
    PutById,

    /**
     * 新增或更新数据（批量）
     */
    Put,

    /**
     * 更新通过编号
     */
    PatchById,

    /**
     * 更新（批量）
     */
    Patch,

    /**
     * 根据编号获取
     */
    GetById,

    /**
     * 分页
     */
    Page;

    /**
     * 所有接口
     * @return {@link Methods[]}
     */
    public static Methods[] all() {
        return Methods.values();
    }

    /**
     * 常规增删改查
     * @return {@link Methods[]}
     */
    public static Methods[] crud() {
        return new Methods[]{
                Page,
                GetById,
                Create,
                DeleteById,
                PatchById
        };
    }

    /**
     * 常规增删改查
     * @return {@link Methods[]}
     */
    public static Methods[] batch() {
        return new Methods[]{
                Page,
                Creates,
                Delete,
                Patch
        };
    }

    /**
     * 根据id操作
     * @return {@link Methods[]}
     */
    public static Methods[] crudById() {
        return new Methods[]{
                GetById,
                DeleteById,
                PatchById,
        };
    }

    /**
     * 放
     * @return {@link Methods[]}
     */
    public static Methods[] put() {
        return new Methods[] {
            Put,
            PutById
        };
    }

}
